package jschool.manejadores;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import jschool.entidades.PersonalEscolar;
import jschool.persistencia.Conexion;

public class ManejadorDePersonalEscolar {
	private static ManejadorDePersonalEscolar instancia = null;
	private ArrayList<PersonalEscolar> personal = null;
	private Conexion conexion = null;
	private ResultSet rs = null;
	private PreparedStatement stmt = null;

	private ManejadorDePersonalEscolar() {
		conexion = Conexion.getInstancia();
	}

	public static ManejadorDePersonalEscolar getInstancia() {
		if (instancia == null) {
			instancia = new ManejadorDePersonalEscolar();
		}
		return instancia;
	}

	public ArrayList<PersonalEscolar> getPersonalEscolar() {
		personal = new ArrayList<PersonalEscolar>();
		try {
			String sql = "SELECT * FROM personalescolar ";
			stmt = (PreparedStatement) conexion.hacerEnunciado(sql);
			rs = conexion.hacerConsulta(sql);
			while (rs.next()) {
				PersonalEscolar personalEscolar = new PersonalEscolar(rs
						.getInt(1), rs.getString(2), rs.getString(3), rs
						.getString(4), rs.getString(5), rs.getString(6), rs
						.getString(7), rs.getString(8), rs.getString(9), rs
						.getString(10), rs.getString(11), rs.getString(12), rs
						.getString(13), rs.getString(14), rs.getString(15), rs
						.getString(16), rs.getString(17), rs.getString(18), rs
						.getString(19), rs.getString(20), rs.getString(21), rs
						.getString(22), rs.getString(23), rs.getString(24), rs
						.getString(25), rs.getString(26), rs.getString(27), rs
						.getDouble(28), rs.getInt(29), rs.getInt(30), rs
						.getString(31), rs.getString(32), rs.getString(33), rs
						.getString(34));
				personal.add(personalEscolar);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,
					"Error Listando Personal Escolar", "Error",
					JOptionPane.ERROR_MESSAGE);
		}
		return personal;
	}

	public int agregarPersonalEscolar(PersonalEscolar personalEscolar) {
		int fila = 0;
		try {
			String sql = "INSERT INTO personalescolar(idEmpleado, usuario, clave, nombre, apellido, direccion, telefono1, telefono2, celular, email, cedula, sexo, estadoCivil, nacionalidad, fechaNacimiento, contrato, fechaIngreso, estado, fechaBaja, idDepartamento, departamento, puesto, profesion, nivelEstudio, estudiosRealizados, experienciasLaborales, tipoDePago, sueldoBruto, pagoPorHora, cantidadHoras, nombreReferido, telefonoReferido, observaciones, imagen) VALUES (0,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
			stmt = (PreparedStatement) conexion.hacerEnunciado(sql);
			stmt.setString(1, personalEscolar.getUsuario());
			stmt.setString(2, personalEscolar.getClave());
			stmt.setString(3, personalEscolar.getNombre());
			stmt.setString(4, personalEscolar.getApellido());
			stmt.setString(5, personalEscolar.getDireccion());
			stmt.setString(6, personalEscolar.getTelefono1());
			stmt.setString(7, personalEscolar.getTelefono2());
			stmt.setString(8, personalEscolar.getCelular());
			stmt.setString(9, personalEscolar.getEmail());
			stmt.setString(10, personalEscolar.getCedula());
			stmt.setString(11, personalEscolar.getSexo());
			stmt.setString(12, personalEscolar.getEstadoCivil());
			stmt.setString(13, personalEscolar.getNacionalidad());
			stmt.setString(14, personalEscolar.getFechaNacimiento());
			stmt.setString(15, personalEscolar.getContrato());
			stmt.setString(16, personalEscolar.getFechaIngreso());
			stmt.setString(17, personalEscolar.getEstado());
			stmt.setString(18, personalEscolar.getFechaBaja());
			stmt.setString(19, personalEscolar.getIdDepartamento());
			stmt.setString(20, personalEscolar.getDepartamento());
			stmt.setString(21, personalEscolar.getPuesto());
			stmt.setString(22, personalEscolar.getProfesion());
			stmt.setString(23, personalEscolar.getNivelEstudio());
			stmt.setString(24, personalEscolar.getEstudiosRealizados());
			stmt.setString(25, personalEscolar.getExperienciasLaborales());
			stmt.setString(26, personalEscolar.getTipoDePago());
			stmt.setDouble(27, personalEscolar.getSueldoBruto());
			stmt.setDouble(28, personalEscolar.getPagoPorHora());
			stmt.setInt(29, personalEscolar.getCantidadHoras());
			stmt.setString(30, personalEscolar.getNombreReferido());
			stmt.setString(31, personalEscolar.getTelefonoReferido());
			stmt.setString(32, personalEscolar.getObservaciones());
			stmt.setString(33, personalEscolar.getImagen());
			fila = stmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Error Agregando Empleado",
					"Error", JOptionPane.ERROR_MESSAGE);
			return 0;
		} finally {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return fila;
	}

	public int modificarPersonalEscolar(PersonalEscolar personalEscolar, int id) {
		int fila = 0;
		try {
			String sql = "usuario = ?, clave = ?, nombre = ?, apellido = ?, direccion = ?, telefono1 = ?, telefono2 = ?, celular = ?, email = ?, cedula = ?, sexo = ?, estadoCivil = ?, nacionalidad = ?, fechaNacimiento = ?, contrato = ?, fechaIngreso = ?, estado = ?, fechaBaja = ?, idDepartamento = ?, departamento = ?, puesto = ?, profesion = ?, nivelEstudio = ?, estudiosRealizados = ?, experienciasLaborales = ?, tipoDePago = ?, sueldoBruto = ?, pagoPorHora = ?, cantidadHoras = ?, nombreReferido = ?, telefonoReferido = ?, observaciones = ?, imagen = ? WHERE idEmpleado = ?";
			stmt = (PreparedStatement) conexion.hacerEnunciado(sql);
			stmt.setString(1, personalEscolar.getUsuario());
			stmt.setString(2, personalEscolar.getClave());
			stmt.setString(3, personalEscolar.getNombre());
			stmt.setString(4, personalEscolar.getApellido());
			stmt.setString(5, personalEscolar.getDireccion());
			stmt.setString(6, personalEscolar.getTelefono1());
			stmt.setString(7, personalEscolar.getTelefono2());
			stmt.setString(8, personalEscolar.getCelular());
			stmt.setString(9, personalEscolar.getEmail());
			stmt.setString(10, personalEscolar.getCedula());
			stmt.setString(11, personalEscolar.getSexo());
			stmt.setString(12, personalEscolar.getEstadoCivil());
			stmt.setString(13, personalEscolar.getNacionalidad());
			stmt.setString(14, personalEscolar.getFechaNacimiento());
			stmt.setString(15, personalEscolar.getContrato());
			stmt.setString(16, personalEscolar.getFechaIngreso());
			stmt.setString(17, personalEscolar.getEstado());
			stmt.setString(18, personalEscolar.getFechaBaja());
			stmt.setString(19, personalEscolar.getIdDepartamento());
			stmt.setString(20, personalEscolar.getDepartamento());
			stmt.setString(21, personalEscolar.getPuesto());
			stmt.setString(22, personalEscolar.getProfesion());
			stmt.setString(23, personalEscolar.getNivelEstudio());
			stmt.setString(24, personalEscolar.getEstudiosRealizados());
			stmt.setString(25, personalEscolar.getExperienciasLaborales());
			stmt.setString(26, personalEscolar.getTipoDePago());
			stmt.setDouble(27, personalEscolar.getSueldoBruto());
			stmt.setDouble(28, personalEscolar.getPagoPorHora());
			stmt.setInt(29, personalEscolar.getCantidadHoras());
			stmt.setString(30, personalEscolar.getNombreReferido());
			stmt.setString(31, personalEscolar.getTelefonoReferido());
			stmt.setString(32, personalEscolar.getObservaciones());
			stmt.setString(33, personalEscolar.getImagen());
			stmt.setInt(34, id);
			fila = stmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Error Modificando Empleado",
					"Error", JOptionPane.ERROR_MESSAGE);
			return 0;
		} finally {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return fila;
	}

	public int eliminarPersonalEscolar(int id) {
		int fila = 0;
		try {
			String sql = "DELETE FROM personalescolar WHERE idEmpleado = ?";
			stmt = (PreparedStatement) conexion.hacerEnunciado(sql);
			stmt.setInt(1, id);
		} catch (SQLException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Error Eliminando Empleado",
					"Error", JOptionPane.ERROR_MESSAGE);
			return 0;
		} finally {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return fila;
	}
}
